import numpy as np
import platgo as pg
from typing import Tuple

"""
用于生成交叉算子父代向量, 简单的选择前一半为p1, 后一半为p2.
"""


def half_selection(pop: pg.Population) -> Tuple[np.ndarray, np.ndarray]:
    """
    分别返回种群前一半和后一半的索引向量，如果种群大小不是偶数就筛去最后一个个体
    :param pop:
    :return: 返回两个父代索引向量
    """
    half = pop.N // 2
    p1 = np.arange(0, half)
    p2 = np.arange(half, 2 * half)
    return p1, p2
